/*
 *
 * Copyright (C) 2008 Jose Javier García Zornoza.
 * 
 * Este es un programa libre; puedes distribuirlo y/o modificarlo bajo
 * los términos de la versión 2 (o cualquier versión posterior) de la Licencia 
 * Pública General de la Fundación de Software Libre.
 * Este programa se distribuye con la esperanza  de poder ser útil, pero sin
 * NINGUNA GARANTIA; tampoco la garantía implícita de COMERCIALIZACION o DEDICACIÓN
 * A UN PROPOSITO PARTICULAR. Ver la licencia GNU GPL para más detalles.
 * Deberías haber recibido una copia de la licencia GNU GPL con este programa;
 * en caso contrario puedes obtener una copia visitando el sitio web www.fsf.org
 * o escribiendo a la Fundación de Software Libre, Inc., 59 Temple 
 * Place - Suite 330, Boston, MA  02111-1307, USA. 
 *
 */
package org.gruposp2p.dnie.crypto;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.Provider;
import java.security.cert.X509Certificate;
import java.util.Enumeration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class JKSKeyStore {

    private static Logger logger = LoggerFactory.getLogger(JKSKeyStore.class);

    private KeyStore keyStore;
    private PrivateKey privateKey;
    private X509Certificate certificado;
   
    public JKSKeyStore(String keyStorePassword, String rutaArchivoJKS, String keyAlias) 
    	throws FileNotFoundException {
    	this (keyStorePassword, new FileInputStream(rutaArchivoJKS), keyAlias);      
    }
    
    public JKSKeyStore(String keyStorePassword, InputStream archivoJKS, String keyAlias) {
        try {
            keyStore = KeyStore.getInstance("JKS");
            keyStore.load(archivoJKS, keyStorePassword.toCharArray());
            privateKey = (PrivateKey) keyStore.getKey(keyAlias, keyStorePassword.toCharArray());
            certificado = (X509Certificate) keyStore.getCertificate(keyAlias);            
        } catch (Exception ex) {
            logger.error(ex.getMessage(), ex);
        } 
    }
    
    public PrivateKey getPrivateKey() {
        return privateKey;
    }
    
    public X509Certificate getCertificate () {
        return certificado;
    }
}
